package com.angelhack.metrosocial.database;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class MetroDB {
	private SQLiteDatabase database;
	private MySqliteHelper dbHelper;
	
	public MetroDB(Context context) {
		dbHelper = new MySqliteHelper(context);
	}
	public void open() throws SQLException {
		database = dbHelper.getWritableDatabase();
	}
	public void close() {
		dbHelper.close();
	}
	public List<EstacionMetro> getAllStations()
	{
		List<EstacionMetro> lista = new ArrayList<EstacionMetro>();
		Cursor cursor = database.query(MySqliteHelper.TABLE_NAME_ESTACIONES, null, null, null, null, null, null);
		  while (cursor.moveToNext()) {
			  EstacionMetro estacion = cursorToComment(cursor);
			  lista.add(estacion);
		    }
		    cursor.close();
		    return lista;
	}
	public List<String> getAllLines()
	{
		List<String> lista = new ArrayList<String>();
		lista.add("Linea 1");
		lista.add("Linea 2");
		lista.add("Linea 3");
		lista.add("Linea 4");
		lista.add("Linea 5");
		lista.add("Linea 6");
		lista.add("Linea 7");
		lista.add("Linea 8");
		lista.add("Linea 9");
		lista.add("Linea A");
		lista.add("Linea B");
		return lista;
	}
	
	public EstacionMetro getEstacionById(int id)
	{
		Cursor cursor = database.query(MySqliteHelper.TABLE_NAME_ESTACIONES, null, MySqliteHelper.TABLE_FIELD_ESTACIONES_ID + "=?"  , new String[]{String.valueOf(id) } , null, null, null);
		if(cursor.moveToNext())
		{
			return cursorToComment(cursor);
		}
		return null;
	}
	public EstacionMetro getEstacionByName(String nombreEstacion)
	{
		Cursor cursor = database.query(MySqliteHelper.TABLE_NAME_ESTACIONES, null, MySqliteHelper.TABLE_FIELD_ESTACIONES_NOMBRE + "=?"  , new String[]{nombreEstacion } , null, null, null);
		if(cursor.moveToNext())
		{
			return cursorToComment(cursor);
		}
		return null;
	}
	public List<EstacionMetro> getEstacionPorLinea(String Linea)
	{
		List<EstacionMetro> lista = new ArrayList<EstacionMetro>();
		Cursor cursor = database.query(MySqliteHelper.TABLE_NAME_ESTACIONES, null, MySqliteHelper.TABLE_FIELD_ESTACIONES_LINEA+"=?", new String[]{Linea}, null, null, null);
		  while (cursor.moveToNext()) {
			  EstacionMetro estacion = cursorToComment(cursor);
			  lista.add(estacion);
		    }
		    cursor.close();
		    return lista;
	}
	
	
	private EstacionMetro cursorToComment(Cursor cursor) {
		EstacionMetro estacion = new EstacionMetro();
		estacion.setId(cursor.getInt(cursor.getColumnIndex(MySqliteHelper.TABLE_FIELD_ESTACIONES_ID)));
		estacion.setNombre(cursor.getString(cursor.getColumnIndex(MySqliteHelper.TABLE_FIELD_ESTACIONES_NOMBRE)));
		estacion.setLinea(cursor.getString(cursor.getColumnIndex(MySqliteHelper.TABLE_FIELD_ESTACIONES_LINEA)));
		estacion.setLatitud(cursor.getDouble(cursor.getColumnIndex(MySqliteHelper.TABLE_FIELD_ESTACIONES_LATITUD)));
		estacion.setLongitud(cursor.getDouble(cursor.getColumnIndex(MySqliteHelper.TABLE_FIELD_ESTACIONES_LONGITUD)));
	    return estacion;
	  }

}
